home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
source code vol 1.adf
/
BLITTERROUTS
/
SHORTBOB.S
< prev
next >
Wrap
Text File
|
1999-09-26
|
6KB
|
339 lines
SHORT BOB BY PSYCHO OF DOMINATORS
start:
MOVE.L #$DFF000,A5
jsr INITIALIZE(pc)
jsr setcolors(pc)
jsr setup_copperlist(pc)
jsr setupscreen(pc)
jsr show_background(pc)
jsr calc_cursorpos(pc)
jsr movebrush(pc)
main_loop:
jsr movebrush(pc)
BTST #6,$BFE001
bne main_loop
jsr RESTORE(pc)
rts
picx=320 ; pixels
picy=256 ; pixels
antal_farver=32
antal_bpl=5
antal_bobbpl=3
brushx=32 ; pixels
brushy=16 ; pixels
picxword=picx/16
picxbyte=picx/8
bplsize=picxbyte*picy
picsize=bplsize*antal_bpl
brushxword=brushx/16
brushxbyte=brushx/8
brushsize=brushxbyte*brushy
CloseLib=-414
ExecBase=4
OpenLib=-408
BLTCPTH=$048
BLTBPTH=$04c
BLTAPTH=$050
BLTDPTH=$054
BLTCMOD=$060
BLTBMOD=$062
BLTAMOD=$064
BLTDMOD=$066
BLTCON0=$040
BLTCON1=$042
BLTSIZE=$058
BPL1MOD=$108
BPLCON0=$100
BPLCON1=$102
COP1LCH=$080
COPJMP1=$088
DDFSTRT=$092
DDFSTOP=$094
DIWSTRT=$08e
DIWSTOP=$090
DMACON= $096
DMACONR=$002
setcolors:
move.l #collist,a0
move.l #colour1+2,a1
move.w #antal_farver-1,d0
fill2: move.w (a0)+,(a1)
adda.l #4,a1
dbf d0,fill2
rts
setup_copperlist:
move.l #bpl1,d0
move.w d0,LO1+2
lsr.l #8,d0
lsr.l #8,d0
move.w d0,HI1+2
move.l #bpl2,d0
move.w d0,LO2+2
lsr.l #8,d0
lsr.l #8,d0
move.w d0,HI2+2
move.l #bpl3,d0
move.w d0,LO3+2
lsr.l #8,d0
lsr.l #8,d0
move.w d0,HI3+2
move.l #bpl4,d0
move.w d0,LO4+2
lsr.l #8,d0
lsr.l #8,d0
move.w d0,HI4+2
move.l #bpl5,d0
move.w d0,LO5+2
lsr.l #8,d0
lsr.l #8,d0
move.w d0,HI5+2
rts
show_background:
move.b #antal_bpl,d0
move.w #picxword,d1
move.w #picy,d2
move.w #0,d3
move.w #0,d4
move.l #picbuffer,a0
move.l #screenbuffer,a1
jsr SHOWSCREEN(pc)
rts
calc_cursorpos:
move.l #0,a0
move.w xpos(pc),d2
divu #8,d2
move.w xpos(pc),d3
andi.w #$000f,d3
lsr.l #8,d3
lsr.l #8,d3
lsr.l #8,d3
adda.w d2,a0
move.w d3,smoothxpos
move.w ypos(pc),d2
mulu #40,d2
adda.l d2,a0
move.l a0,cursor_position
rts
restorebehind_brush1:
move.b #antal_bobbpl,d0
move.w #brushxword,d1
move.w #brushy,d2
move.w #picxbyte-brushxbyte,d3
move.w #picxbyte-brushxbyte,d4
move.l #picbuffer1,a0
addi.l cursor_position(pc),a0
move.l cursor_position(pc),a1
addi.l #bpl1,a1
jsr SHOWSCREEN(pc)
rts
show_brush1:
move.b #antal_bobbpl,d0
move.w #brushxword,d1
move.w #brushy,d2
move.w #0,d3
move.w #picxbyte-brushxbyte,d4
move.w smoothxpos(pc),d5
move.l #brush1,a0
move.l cursor_position(pc),a1
addi.l #bpl1,a1
move.l #brushmask1,a2
jsr SHOWBRUSH(pc)
rts
movebrush:
movebrush_wait:
cmp.b #$D0,$006(a5)
bne movebrush_wait
move.w #$8400,DMACON(A5)
jsr restorebehind_brush1(pc)
jsr calc_cursorpos(pc)
jsr show_brush1(pc)
move.w #$0400,DMACON(A5)
move.b $006(a5),$100
rts
setupscreen:
move.w #$8100,DMACON(A5)
move.w #$8040,DMACON(A5)
move.w #$0020,DMACON(A5)
move.w #antal_bpl,d0
mulu #$1000,d0
ori.w #$0280,d0
move.w d0,BPLCON0(A5)
move.w #0,BPLCON1(A5)
move.w #0,BPL1MOD(A5)
move.w #$0080,DMACON(A5)
move.l #copperlist,COP1LCH(A5)
move.w COPJMP1(A5),d0
move.w #$8080,DMACON(A5)
rts
startlist=38
INITIALIZE:
move.l execbase.w,a6
MOVE.W #$7FFF,$09A(A5)
rts
RESTORE:
move.l execbase.W,a6
move.w #$000f,DMACON(A5)
lea graphics_library(pc),a1
clr.l d0
jsr openlib(a6)
move.l d0,a1
move.l startlist(a1),COP1LCH(A5)
clr.w COPJMP1(A5)
move.w #$83e0,DMACON(A5)
jsr closelib(a6)
MOVE.W #$4000,$09A(A5)
MOVE.W #$E02C,$09A(A5)
rts
graphics_library: dc.b 'graphics.library',0
even
SHOWBRUSH:
move.w d1,d7
mulu d2,d7
mulu #2,d7
move.w d2,d6
mulu #64,d6
addi.w d1,d6
showbrush_wait:
btst #14,DMACONR(A5)
bne showbrush_wait
move.l a2,BLTAPTH(A5)
move.l a0,BLTBPTH(A5)
move.l a1,BLTCPTH(A5)
move.l a1,BLTDPTH(A5)
move.w d3,BLTAMOD(A5)
move.w d3,BLTBMOD(A5)
move.w d4,BLTCMOD(A5)
move.w d4,BLTDMOD(A5)
andi.w #$f000,d5
move.w d5,BLTCON1(A5)
ori.w #$0fca,d5
move.w d5,BLTCON0(A5)
move.w d6,BLTSIZE(A5)
MOVE.L #$FFFFFFFF,$044(a5)
addi.l d7,a0 ; HUSK
addi.l #bplsize,a1 ; HUSK
subi.b #1,d0
bne showbrush_wait
rts
SHOWSCREEN:
move.w d1,d7
mulu d2,d7
mulu #2,d7
move.w d2,d6
mulu #64,d6
addi.w d1,d6
showscreen_wait:
btst #14,DMACONR(A5)
bne showscreen_wait
move.l a0,BLTAPTH(A5)
move.l a1,BLTDPTH(A5)
move.w d3,BLTAMOD(A5)
move.w d4,BLTDMOD(A5)
move.w #$0000,BLTCON1(A5)
move.w #$09f0,BLTCON0(A5)
move.w d6,BLTSIZE(A5)
addi.l #bplsize,a0
addi.l #bplsize,a1
subi.b #1,d0
bne showscreen_wait
rts
cursor_position: dc.l picxbyte*16
shadow_position: dc.l 0
xpos: dc.w 160
ypos: dc.w 100
smoothxpos: dc.w 0
copperlist:
dc.w $008e,$2c81
dc.w $0090,$f9c1
dc.w $0092,$0038
dc.w $0094,$00d0
dc.w $0100,$5200
HI1: dc.w $00e0,0
LO1: dc.w $00e2,0
HI2: dc.w $00e4,0
LO2: dc.w $00e6,0
HI3: dc.w $00e8,0
LO3: dc.w $00ea,0
HI4: dc.w $00ec,0
LO4: dc.w $00ee,0
HI5: dc.w $00f0,0
LO5: dc.w $00f2,0
colour1:
dc.w $0180,$0000
dc.w $0182,$0000
dc.w $0184,$0000
dc.w $0186,$0000
dc.w $0188,$0000
dc.w $018a,$0000
dc.w $018c,$0000
dc.w $018e,$0000
dc.w $0190,$0000
dc.w $0192,$0000
dc.w $0194,$0000
dc.w $0196,$0000
dc.w $0198,$0000
dc.w $019a,$0000
dc.w $019c,$0000
dc.w $019e,$0000
dc.w $01a0,$0000
dc.w $01a2,$0000
dc.w $01a4,$0000
dc.w $01a6,$0000
dc.w $01a8,$0000
dc.w $01aa,$0000
dc.w $01ac,$0000
dc.w $01ae,$0000
dc.w $01b0,$0000
dc.w $01b2,$0000
dc.w $01b4,$0000
dc.w $01b6,$0000
dc.w $01b8,$0000
dc.w $01ba,$0000
dc.w $01bc,$0000
dc.w $01be,$0000
dc.w $ffff,$fffe ;end copper list
brush1: blk.b brushsize*antal_bobbpl,$ff
brushmask1: blk.b brushsize,$ff
picbuffer:
picbuffer1: blk.b bplsize,0
picbuffer2: blk.b bplsize,0
picbuffer3: blk.b bplsize,0
picbuffer4: blk.b bplsize,0
picbuffer5: blk.b bplsize,0
collist: blk.b 64,0
screenbuffer:
bpl1: blk.b bplsize,0
bpl2: blk.b bplsize,0
bpl3: blk.b bplsize,0
bpl4: blk.b bplsize,0
bpl5: blk.b bplsize,0
END: